# 各ソースファイルに何が含まれるかの概要レベルの記述……
このページはひどく時代遅れです

- ヘッダファイル
- ソースファイル
- Unicode ライブラリの文書
- Unicode ウィジェットの文書

## ヘッダファイル

edgelist.h
  ここにはラスタライザルーチン (splinefill.c) が使用するデータ構造が含まれていますが、いくつかの基本メカニズムは多数の他の場所、autohint.c, splineoverlap.c やたぶん他の場所でも使われることが判っています。
fontforge.h
  これは他のヘッダをインクルードするだけの汎用的なヘッダです。このディレクトリに含まれる各ソースファイルはこれをインクルードするべきです。
fontforgeui.h
  他のファイルを取り込み、2, 3 のグローバル変数を定義する、もう 1 つの汎用的ヘッダファイルです。すべての UI 関連のソースファイルはこれをインクルードするべきです。
psfont.h
  これらのデータ構造は、 PostScript フォントの一時的な安置場所として、splineutil.c の SplineFontFromPSFont が呼ばれて SplineFont (splinefont.h) に変換するまでの間、parsepfa.c で使用されます。
splinefont.h
  これはプログラムのすべての基本的データ構造を含んでいます。
views.h
  これは基本的な UI データ構造を含んでいます。

## ソースファイル

autohint.c
  PostScript ヒントの推測を行うルーチンを含んでいます。
autosave.c
  自動セーブを取り扱う 2,3 の基本的ルーチンを含んでいますが、実際の作業はほとんど sfd.c の中で行われています。
autowidth.c
  文字の適切な幅と適切なカーニング量を推測します。ユーザから指示を受けるためのがダイアログを作成し、それが終れば妥当な値を推測しようとします。
bitmapdlg.c
  ビットマップの作成と再作成のための 2 種類のダイアログを取り扱います。(作成用のは新しいビットマップフォント全体を作成し、再作成用のは選択された文字を再生成することにより、既存のビットマップを変更します)。
bitmapview.c
  ビットマップエディタの基本的処理の多くを行います。メニュー・イベントなどを扱います。
bvedit.c
  ビットマップ編集のためのいくつかの追加ルーチンです (bv ⇒ bitmapview)。可動選択領域・貼り付け・平行移動などを行います。
charview.c
  スプライングリフエディタの基本的処理を行います。メニュー・イベントの扱いや、マウスイベントから適切なツールへのディスパッチなどの処理を行います。
charviewicons.c
  上記ののスプラインエディタの情報領域に現れる画像のためのアイコンリソースです。
cursors.c
  使用される各種のカーソルを定義します。
cvaddpoints.c
  現在のツールが点ジェネレータであるときのマウスイベントを扱います。charview.c が、イベントのディスパッチを受け持ちます。(cv ⇒ charview)
cvexport.c
  データを他のフォーマットに書き出すためのダイアログです。そのフォーマットのための変換ルーチン (の一部) も含まれます。(ビットマップビューからの xbm ファイルの書き出しにも用いられます)
cvgetinfo.c
  情報を得る(I) のディスパッチャと charview (訳注:現在のグリフビュー) のダイアログを含みます。現在の選択内容によって異なる情報のタイプが数種類存在し、それぞれに対してダイアログが存在します。
  - 点が選択されている
  - 他の文字への参照が (前面で) 選択されている
  - 画像が (背面で) 選択されている
  - または 2 個以上の物が選択されている (か、何も選択されていない) 場合、文字そのものの一般的な情報
    この最後の項目はフォントビューでも使用されます。
cvhints.c
  PostScript ヒントをユーザが手動で設定できるコマンドと一連の自明なダイアログを含みます。
cvimages.c
  CharView, BitmapView, または FontView への取り込みを行うコードを含みます。当初は、これは CharView への画像取り込みだけを行っていましたが、現在ではその名前を越えて成長しています。CharView には画像 (gif, png, tiff, jpeg, xbm, xpm, sun raster, windows bmp, …) を背景に取り込むことができます。これをクリップボードから使えるようにしたいのですが、クリップボードに画像を複製する標準的な方法が何なのか知りません。その他、(非常に限定された) eps ファイルと xfig (あまりうまくいきません) の取り込みが可能です。BitmapView には画像を前面に取り込むことしかできません。私はビットマップのみを考えていますが、私は忘れます。FontView は BDF フォントをビットマップのリストに取り込みます。
cvknife.c
  ナイフツールが選択されているときのマウスイベントのディスパッチファイルです。
cvpalettes.c
  CharView に付属する 2 個のパレットと、BitmapView 付属の 2 個のパレット、および CharView と BitmapView のポップアップメニューを扱います。
cvpointer.c
  ポインタツールが選択されているときのマウスイベントのディスパッチファイルです。
cvruler.c
  ものさしツールが選択されているときのマウスイベントのディスパッチファイルです。
cvshapes.c
  図形ツール (長方形、楕円、多角形、星形) のいずれかが選択されているときのマウスイベントのディスパッチファイルです。
cvstroke.c
  `輪郭を太らせる(E)...` コマンド用のダイアログです。その作業を行うためのいくつかのルーチンも含まれています。splinestroke.c も参照してください。
cvtranstools.c
  変形ツール (拡大・縮小、回転、反転、変形) のいずれかが選択されているときのマウスイベントのディスパッチファイルです。
cvundoes.c
  CharView, BitmapView および FontView におけるアンドゥ、リドゥとコピー/ペーストを取り扱うルーチンを含みます。
dumpbdf.c
  BDF ファイルを書き出します。
dumppfa.c
  PostScirpt ファイルを書き出します。pfa, pfb, type3, type0 です。splinesave.c も参照してください。
fontinfo.c
  フォント情報ダイアログとフォントのエンコーディング変換のためのルーチンを含みます。
fontview.c
  fontview のメインファイルです。メニューディスパッチャ、イベントハンドラと、基本的なフォントベルのルーチンです。
fvcomposit.c
  複合グリフをどう組み立てるかを記述するファイルです (すなわち、Agrave はフォント内の A の文字への参照と grave への参照の組合せで、A の上にアクセントをうまくは位置することにより作成します)。スプラインとビットマップの両方に対して働きます。
fvfonts.c
  `フォントの統合(M)...` コマンドと `フォントの補間(L)...` コマンドのダイアログとその機能を含みます。
fvimportbdf.c
  BDF フォントを読み込むルーチンです。(フォント選択ダイアログは cvimages.c にあることにご注意ください)
fvmetrics.c
  幅の自動設定と自動カーニングのためのダイアログとルーチンです。
images.c
  パレット内で使用される画像のためのアイコンリソースです。これが charviewicons.c にマージされないはなぜかという疑問にうまい答えがありません。
metricsview.c
  メトリックビューの主体となるファイルです。メニューディスパッチャとイベントハンドラのほか、ビューのほとんどの機能が含まれます。
print.c
  印刷ダイアログとページ設定ダイアログを扱います。
parsepfa.c
  PostScript フォントを解析します。Type0 フォントのエンコーディングの取得は行いません。Type3 は、あまりに自由度が高いので、すべて (というかほとんどの?) フォントは解釈できません。しかし、すくなくとも自分で書き出した Type3 (画像を含んでいるものを除く) は読める必要があります。この作業の一部は psread.c と splineutil.c で行われます。
parsettf.c
  TTF (および OTF) フォントファイルを解析し、2 次 Bézier 曲線から 3 次 Bézier 曲線に変換します (簡単)。
prefs.c
  プリファレンス (環境設定) ダイアログです。
psread.c
  これは、各種のタイプの PostScript ― EPS ファイル、Type3, Type1, Type2 などを解釈するインタプリタです。あまり多くは扱えません。
psunicodenames.c
  PostScript における、Unicode 文字に対する Adobe 標準の名前をすべて含むリストです。この配列で NULL になっている項目はすべて、uni%04X というアルゴリズムで生成された名前です。
scripting.c
  スクリプトを扱うすべてのルーチンです。
savefontdlg.c
  `フォントを出力(G)...` コマンドのダイアログとディスパッチャです。
sfd.c
  独自のスプラインフォントデータベースフォーマット (sfd) を読み書きするルーチンです。また、自動セーブファイルも扱います。これは基本的には、変更を加えたフォントの一部分だけを SFD フォーマットで書き出し、それらの変更がどの文字に適用されるべきを記した少量の追加ヘッダを付け加えたものです。
splashimage.c
  スプラッシュ画像を含むリソースです。
splinefill.c
  ラスタライズ (およびアンチエイリアス処理) を行うルーチンです。同様のデータ構造を使用する、自動ヒントのためのスケルトン化や重複除去などの機能も提供しています。
splineoverlap.c
  重複除去コマンドを実装するルーチンです。
splinesave.c
  PostScript (それほどではありませんが TrueType も) の出力用ルーチンです。Type1 または Type2 への変換コマンドを含みます。最適な参照を算出します。
splinesaveafm.c
  AFM ファイルを出力します。
splinestroke.c
  ストロークの太線化処理を扱うための追加ルーチンです。
splineutil.c
  ユーティリティルーチンの束です。PostScript Type1 文字列を SplineChar に変換します。バウンディングボックスを計算します。参照と依存性の更新を処理します。描画のためのスプラインの直線近似を計算します。時計回り・反時計回りを検出します。PostScript/TTF フォントの読み込み時に適切な点のタイプを推測します。SplinePointList をコピーします。SplienPointList を座標変換します。3 次方程式を (近似的に) 解きます。編曲点を検出します。点がスプラインに対して“近い”かどうかを算出します。
splineutil2.c
  さらに追加のユーティリティ関数です。スプラインが平行であるかどうかを決定します (制御点が縮退していないときですら、直線をトレースするときに尖った点ができることがあります。例えば、両方の制御点が端点の間の点にあるときです)。2 本のスプラインの交点を (近似的に) 発見します。点の列からスプラインを近似します (MergePoint や、スプラインへの点の挿入、その他多くの処理で使用されます)。`合併(M)` コマンドそのもの。`単純化(S)` コマンド。小さすぎるスプライン (これらは重複除去ルーチンを混乱させるので、すべての処理を行う前に削除しければなりません) を削除するコマンド。新しい SplineFont を作成するルーチン。tangent point (曲線の開始点) で、その点の制御点を移動したときにも、その方向が正しいことを保証するためのルーチン。新しい点 (および、点が動かされたときに、その点に制御点を設定していなかった場合）の制御点として適切なデフォルト値を算出するルーチン。パス上の任意の点が選択されたかどうかの決定。閉じたパスの反転。
stamp.c
  私が最近ビルドを行ったときのタイムスタンプです。
stamper.c
  タイムスタンプ (stamp.c) を生成するプログラムです。
start.c
  メインルーチンです。データを初期化し、コマンドライン引数を読み込みます。スプラッシュスクリーンを扱います。自動セーブ用の再上位のディスパッチャです。
threaddummy.c
  ダミーの pthread_create を含んでいますので、GIO のその部分に興味が無いときに pthreads を引っ張り出す必要が無くなります。
tottf.c
  TrueType または OpenType フォントを保存します。参照文字の最適化と Opentype Type2 変換ルーチンについては splinesave.c も参照してください。
transform.c
  変形ダイアログとディスパッチルーチン群です。
uiutil.c
  ユーザインターフェイス用のユーティリティです。
utils.c
  んー。これは空です。
windowmenu.c
  ウィンドウメニューの作成とディスパッチを行います。

― 前 ― 目次 ― 次 ―